home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Libraries / GUSI / Makefile < prev    next >
Encoding:
Makefile  |  1994-01-11  |  7.7 KB  |  315 lines  |  [TEXT/MPS ]

  1. #######################################################################
  2. #    Project    :    GUSI                -    Grand Unified Socket Interface
  3. #    File        :    Makefile            -    Build the damn thing
  4. #    Author    :    Matthias Neeracher
  5. #    Started    :    22Mar92                                Language    :    MPW Shell/Make
  6. #    Modified    :    24Mar92    MN    GUSIDispatch
  7. #                    12Apr92    MN    GUSIUnixTest
  8. #                    17Apr92    MN    Reorganize Libraries
  9. #                    19Apr92    MN    Rewrite in C++
  10. #                    12May92    MN    GUSIAtlkTest
  11. #                    06Jun92    MN    PPC Toolbox domain
  12. #                    15Jun92    MN    GUSIFSp
  13. #                    25Jul92    MN    GUSITest
  14. #                    26Jul92    MN    Rewrote GUSIAtlkTest
  15. #                    02Aug92    MN    GUSIPPCTest
  16. #                    03Aug92    MN    GUSIBuffer.cp
  17. #                    16Aug92    MN    TCP/IP files: GUSIINET.cp, GUSITCP.cp, GUSIUDP.cp
  18. #                    01Sep92    MN    Make GUSI configurable
  19. #                    08Sep92    MN    Subset libraries
  20. #                    08Sep92    MN    GUSISocketTest.c
  21. #                    24Sep92    MN    Install
  22. #                    18Oct92    MN    Separate clean and dirty variants
  23. #                    27Oct92    MN    More robust deletion
  24. #                    14Nov92    MN    Subset libraries were not working correctly
  25. #                    06Dec92    MN    Automatic Distribution
  26. #                    18Dec92    MN    Watch out for filenames with spaces
  27. #                    09Jan93    MN    Make list of targets to be built more flexible
  28. #                    14Mar93    MN    Use Stuff to build distribution
  29. #                    04Apr93    MN    Release 1.1.1
  30. #                    01Jun93    MN    Introduce more conservative dependences
  31. #                    20Jun93    MN    Release 1.2.0
  32. #                    17Jul93    MN    Release 1.3.0
  33. #                    17Nov93    MN    Release 1.3.4, introducing GUSIRemoteConsole
  34. #                    11Jan94    MN    Release 1.3.5
  35. #    Last        :    11Jan94
  36. #######################################################################
  37.  
  38. #######################################################################
  39. # Paths where GUSI components will go 
  40. #
  41.  
  42. GUSICIncludes    =    {CIncludes}
  43. GUSICLibraries    =    {CLibraries}
  44. GUSIRIncludes    =    {RIncludes}
  45.  
  46. #######################################################################
  47. # Comment out GUSI.ps if you don't have SpiderWEB and TeXShop
  48. #
  49.  
  50. GUSI_PS    =    GUSI.ps
  51.  
  52. #######################################################################
  53. # You might not need to change anything below this line 
  54. #
  55.  
  56. GUSI_SOURCES =                        ∂
  57.     GUSIFSp.cp                        ∂
  58.     GUSIDispatch.cp                ∂
  59.     GUSISocket.cp                    ∂
  60.     GUSIFile.cp                        ∂
  61.     GUSISIOW.cp                        ∂
  62.     GUSIBuffer.cp                    ∂
  63.     GUSIUnix.cp                        ∂
  64.     GUSIAppleTalk.cp                ∂
  65.     GUSIPPC.cp                        ∂
  66.     GUSIINET.cp                        ∂
  67.     GUSITCP.cp                        ∂
  68.     GUSIUDP.cp                        ∂
  69.     GUSINetDB.cp                    ∂
  70.     GUSIPAP.cp                        ∂
  71.     GUSICfg.c                        ∂
  72.     GUSIRemoteConsole.cp
  73.         
  74. GUSI_HEADERS =                        ∂
  75.     GUSI.h                            ∂
  76.     GUSI_P.h                            ∂
  77.     TFileSpec.h                        ∂
  78.     compat.h                            ∂
  79.     dirent.h                            ∂
  80.     'machine/ansi.h'                ∂
  81.     'machine/endian.h'            ∂
  82.     'machine/types.h'                ∂
  83.     netdb.h                            ∂
  84.     'netinet/in.h'                    ∂
  85.     'netinet/tcp.h'                ∂
  86.     'sys/cdefs.h'                    ∂
  87.     'sys/errno.h'                    ∂
  88.     'sys/fcntl.h'                    ∂
  89.     'sys/ioctl.h'                    ∂
  90.     'sys/socket.h'                    ∂
  91.     'sys/stat.h'                    ∂
  92.     'sys/time.h'                    ∂
  93.     'sys/types.h'                    ∂
  94.     'sys/uio.h'                        ∂
  95.     'sys/un.h'                        ∂
  96.     'sys/unistd.h'                    ∂
  97.     unistd.h            
  98.  
  99. OBSOLETE_HEADERS =                                ∂
  100.     "{GUSICIncludes}"'machine/machtypes.h'    ∂
  101.     "{GUSICIncludes}"'sys/ioctl_compat.h'    ∂
  102.     "{GUSICIncludes}"'sys/ttychars.h'        ∂
  103.     "{GUSICIncludes}"'sys/ttydev.h'
  104.     
  105. GUSI_OBJECTS =                        ∂
  106.     :Obj:GUSIFSp.cp.o                ∂
  107.     :Obj:GUSIDispatch.cp.o        ∂
  108.     :Obj:GUSISocket.cp.o            ∂
  109.     :Obj:GUSIFile.cp.o            ∂
  110.     :Obj:GUSISIOW.cp.o            ∂
  111.     :Obj:GUSIBuffer.cp.o            ∂
  112.     :Obj:GUSIUnix.cp.o            ∂
  113.     :Obj:GUSIAppleTalk.cp.o        ∂
  114.     :Obj:GUSIPPC.cp.o                ∂
  115.     :Obj:GUSIINET.cp.o            ∂
  116.     :Obj:GUSITCP.cp.o                ∂
  117.     :Obj:GUSIUDP.cp.o                ∂
  118.     :Obj:GUSINetDB.cp.o            ∂
  119.     :Obj:GUSIPAP.cp.o
  120.  
  121. GUSI_DOC =                        ∂
  122.     GUSI.web                        ∂
  123.     GUSI.tex                        ∂
  124.     GUSI.ps                        ∂
  125.     README
  126.  
  127. GUSI_TARGETS =                    ∂
  128.     GUSI.o                         ∂
  129.     GUSI_Everything.cfg        ∂
  130.     GUSI_Appletalk.cfg        ∂
  131.     GUSI_Internet.cfg            ∂
  132.     GUSI_Unix.cfg                ∂
  133.     GUSI_PPC.cfg                ∂
  134.     GUSI_PAP.cfg                ∂
  135.     GUSIRemoteConsole.o
  136.  
  137. GUSI_LIB =                        ∂
  138.     {GUSI_TARGETS}                ∂
  139.     GUSI.r                        ∂
  140.     GUSI.rsrc
  141.  
  142. GUSI_TEST =                            ∂
  143.     :Examples:GUSITest.c            ∂
  144.     :Examples:GUSITest.h            ∂
  145.     :Examples:GUSITest.r            ∂
  146.     :Examples:GUSITest.rsrc        ∂
  147.     :Examples:GUSITest_P.h        ∂
  148.     :Examples:GUSISocketTest.c    ∂
  149.     :Examples:GUSIAtlkTest.c    ∂
  150.     :Examples:GUSIFileTest.c    ∂
  151.     :Examples:GUSIINETTest.c    ∂
  152.     :Examples:GUSIPPCTest.c        ∂
  153.     :Examples:GUSIUnixTest.c    ∂
  154.     :Examples:GUSIUnixTest.r    ∂
  155.     :Examples:GUSIFinger.c        ∂
  156.     :Examples:GUSIFinger.r        ∂
  157.     :Examples:GUSIPAPTest.c    
  158.         
  159. GUSI_MISC =                            ∂
  160.         MakeAliases                    ∂
  161.         Internalize                    ∂
  162.         Distribution                ∂
  163.         SafeDel                        ∂
  164.         Aliases                        ∂
  165.         GUSI.dn                        ∂
  166.         GUSI.ext                        ∂
  167.         GUSI_C.dn                    ∂
  168.         GUSIINET_P.h                ∂
  169.         GUSIPPC_P.h                    ∂
  170.         GUSIRsrc_P.h                ∂
  171.         Makefile                        ∂
  172.         '/etc/services'
  173.  
  174. GUSI_DISTR    =                        ∂
  175.         {GUSI_SOURCES}             ∂
  176.         {GUSI_HEADERS}                ∂
  177.         {GUSI_DOC}                     ∂
  178.         {GUSI_LIB}                     ∂
  179.         {GUSI_TEST}                    ∂
  180.         {GUSI_MISC}
  181.         
  182. Debug    =    
  183.  
  184. COptions = -r -mbg on -sym on -i : -i :include
  185. CPlusOptions = -mf -mbg on -sym on -i : -i :include {Debug}
  186. LOptions    = -sym on -mf -w
  187. ROptions = -i :
  188.  
  189. :Obj:            ƒ    :
  190.  
  191. Help            ƒ
  192.     Echo "Top level targets are:"
  193.     Echo "∂tInstall    - Install GUSI"
  194.     Echo "∂tUninstall  - Try to remove GUSI"
  195.     Echo "∂tGUSI       - Rebuild GUSI (use with care)"
  196.     Echo "∂tGUSITest   - Build GUSI Examples"
  197.     
  198. Alias.dump     ƒ  "{Libraries}Runtime.o" "{CLibraries}StdCLib.o" "{CLibraries}CPlusLib.o"
  199.     DumpObj -mods "{Libraries}Runtime.o" > Alias.dump
  200.     DumpObj -mods "{CLibraries}StdCLib.o" >> Alias.dump
  201.     DumpObj -mods "{CLibraries}CPlusLib.o" >> Alias.dump
  202.  
  203. Alias.rn    ƒ    Aliases Alias.dump
  204.     MakeAliases Alias.dump
  205.  
  206. GUSI.dn        ƒ    preGUSI.o GUSI.ext
  207.     DumpObj -mods preGUSI.o    | Internalize
  208.  
  209. StdLib.o    ƒ Alias.rn
  210.     Lib -w -o StdLib.o            ∂
  211.         -sg GUSILib=Main            ∂
  212.         `Catenate Alias.rn`        ∂
  213.         "{Libraries}Runtime.o"    ∂
  214.         "{CLibraries}StdCLib.o"    ∂
  215.         "{CLibraries}CPlusLib.o"∂
  216.         "{Libraries}dnr.o"        ∂
  217.         -df Alias1.df
  218.  
  219. #######################################################################
  220. # The full library
  221. #
  222.  
  223. preGUSI.o    ƒ    {GUSI_OBJECTS} Alias.rn StdLib.o
  224.     Lib -w -o preGUSI.o            ∂
  225.         {GUSI_OBJECTS}                ∂
  226.         StdLib.o                        ∂
  227.         -sg Main=GUSIResident    ∂
  228.         -df Alias.df
  229.  
  230. GUSI.o        ƒ    preGUSI.o GUSI.dn
  231.     Set Echo 0
  232.     Echo "∂t∂tLib" -w -o GUSI.o ...
  233.     Lib -w -o GUSI.o preGUSI.o `Catenate GUSI.dn`
  234.     Set Echo 1
  235.  
  236. GUSI_Everything.cfg    ƒ    GUSICfg.c
  237.     C -d GUSI_Everything -o GUSI_Everything.cfg GUSICfg.c
  238.  
  239. GUSI_Appletalk.cfg    ƒ    GUSICfg.c
  240.     C -d GUSI_Appletalk -o GUSI_Appletalk.cfg GUSICfg.c
  241.  
  242. GUSI_Internet.cfg    ƒ    GUSICfg.c
  243.     C -d GUSI_Internet -o GUSI_Internet.cfg GUSICfg.c
  244.  
  245. GUSI_Unix.cfg    ƒ    GUSICfg.c
  246.     C -d GUSI_Unix -o GUSI_Unix.cfg GUSICfg.c
  247.  
  248. GUSI_PPC.cfg    ƒ    GUSICfg.c
  249.     C -d GUSI_PPC -o GUSI_PPC.cfg GUSICfg.c
  250.  
  251. GUSI_PAP.cfg    ƒ    GUSICfg.c
  252.     C -d GUSI_PAP -o GUSI_PAP.cfg GUSICfg.c
  253.  
  254. GUSIRemoteConsole.o    ƒ    GUSIRemoteConsole.cp
  255.     {CPlus} {CPlusOptions} GUSIRemoteConsole.cp -o GUSIRemoteConsole.o
  256.  
  257. #######################################################################
  258. # Clean namespace
  259. #
  260.  
  261. GUSI_C.o        ƒ    GUSI.o GUSI.dn
  262.     Lib -o GUSI_C.o                ∂
  263.         GUSI.o                        ∂
  264.         `Catenate GUSI_C.dn`
  265.     
  266. GUSI.tex            ƒ    GUSI.web
  267.     cweave GUSI
  268.     
  269. GUSI.dvi            ƒ    GUSI.tex
  270.     tex GUSI
  271.  
  272. GUSI.ps            ƒ    GUSI.dvi
  273.     dvips -a -Z GUSI.dvi -o GUSI.ps
  274.     
  275. GUSI                 ƒ    {GUSI_TARGETS} {GUSI_DOC}
  276.  
  277. Install            ƒ
  278.     :SafeInstall -to "{GUSICLibraries}"                        {GUSI_TARGETS}
  279.     :SafeInstall -to "{GUSICIncludes}" -from include    {GUSI_HEADERS} GUSIRsrc_P.h
  280.     :SafeInstall -to "{GUSIRIncludes}"    GUSI.r GUSI.rsrc :include:GUSIRsrc_P.h
  281.     :SafeDel {OBSOLETE_HEADERS}
  282.     :SafeInstall -y -to "{PrefsFolder}:"    '/etc/services'
  283.         
  284. Uninstall        ƒ
  285.     :SafeDel "{CLibraries}GUSI.o" "{CLibraries}GUSI_F.o"
  286.     For i in {GUSI_HEADERS}
  287.         :SafeDel "{GUSICIncludes}{i}"
  288.     End    
  289.     :SafeDel "{RIncludes}GUSI.r" "{RIncludes}GUSI.rsrc" "{RIncludes}GUSIRsrc_P.h" 
  290.     
  291. GUSITest            GUSIFileTest    ∂
  292. GUSIFinger        GUSIPAPTest        ∂
  293. GUSIUnixTest    GUSIUnixTest2    ∂
  294. GUSIAtlkTest    GUSIAtlkTest2    ∂
  295. GUSIPPCTest        GUSIPPCTest2    ∂
  296. GUSIINETTest    GUSIINETTest2    ƒ    $OutOfDate
  297.     Directory Examples
  298.         Set OldEcho {Echo}
  299.         Set Echo 0
  300.         BuildProgram {Targ}
  301.         Set Echo {OldEcho}
  302.     Directory ::
  303.  
  304. GUSICleanDep    ƒ
  305.     :SafeDel '≈.dn' '≈.rn' '≈.df'
  306.  
  307. Clean    ƒ
  308.     :SafeDel '≈.dn' '≈.rn' '≈.df' '≈.o' '≈.toc' '≈.tex' '≈.log' '≈.dump' '≈.sym'
  309.  
  310. RealClean ƒ    Clean
  311.     :SafeDel '≈.dvi' '≈.ps' '-t APPL'
  312.  
  313. Distribution ƒ GUSI
  314.     :Distribute GUSI.distr GUSI_135.sit
  315.